import 'package:flutter/material.dart';
import 'package:flutter_demo/ui/pages/status/data/share_data.dart';

//全局共享数据必须建立在 MaterialApp 上层，否则只能在不使用路由的情况下平级子组件中传递数据
class ShareWidget extends InheritedWidget {
  // 需要共享的数据，可以是单个数据，也可以是多个数据
  // 多个数据建议封装成一个类来进行管理，如这里的DataState，里面可以根据实际需求添加更多的字段。
  // final int shareData;  // 单个值可以不用封装成类，直接定义，但实际需求往往更复杂，因此建议统一使用外部的管理类来管理
  final ShareData shareData; // 建议定义类来统一管理共享数据，一个或者多个数据。

  // 构造函数
  const ShareWidget({
    Key? key,
    required this.shareData,
    required Widget child,
  }) : super(key: key, child: child);

  // 直接返回共享数据
  static ShareData? of(BuildContext context) {
    //print(context);
    final ShareWidget? shareWidget =
        context.dependOnInheritedWidgetOfExactType<ShareWidget>();
    return shareWidget?.shareData;
  }

  @override
  bool updateShouldNotify(ShareWidget oldWidget) {
    return shareData != oldWidget.shareData;
  }
}
